package main.leetcode.offer.firstround.from51to68;

/**
 * 72.字符流中第一个不重复的字符
 *
 * <p>题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如，当从字符流中只读出前两个字符"go"时，第一个只出现一次的字符是"g"。
 * 当从该字符流中读出前六个字符“google"时，第一个只出现一次的字符是"l"。
 *
 * <p>输出描述: 如果当前字符流没有存在出现一次的字符，返回#字符。
 */
public class ex72 {
    private int[] count = new int[256];
    private StringBuilder str = new StringBuilder();

    /** Insert one char from stringstream */
    public void Insert(char ch) {
        ++count[ch];
        str.append(ch);
    }
    /** return the first appearence once char in current stringstream */
    public char FirstAppearingOnce() {
        char[] chars = str.toString().toCharArray();
        for (char aChar : chars) {
            if (count[aChar] == 1) {
                return aChar;
            }
        }
        return '#';
    }
}
